package net.tv90.bfmccore.util;

import org.bukkit.entity.Player;

import java.util.*;

/**
 * 临时权限
 */
public class TempPermission{
    /**
     * 存储玩家的临时权限
     */
    static Map<String, Set<String>> tempPermMap = new HashMap<>();

    /**
     * 玩家是否有临时权限
     * @param p 玩家
     * @param perm 权限
     * @return 玩家是否有临时权限
     */
    public static boolean hasTempPerm(Player p,String perm){
        if(tempPermMap.containsKey(p.getName())) return tempPermMap.get(p.getName()).contains(perm);
        return false;
    }

    /**
     * 设置玩家临时权限
     * @param p 玩家
     * @param perm 临时权限
     */
    public static void setTempPerm(Player p,String perm){
        Set<String> set = tempPermMap.getOrDefault(p.getName(),new HashSet<>());
        set.add(perm);
        tempPermMap.put(p.getName(),set);
    }

    /**
     * 移除玩家临时权限
     * @param p 玩家
     * @param perm 临时权限
     */
    public static void unsetTempPerm(Player p,String perm){
        if(!tempPermMap.containsKey(p.getName()) || tempPermMap.get(p.getName()) == null) return;
        Set<String> set = tempPermMap.get(p.getName());
        set.remove(perm);
        tempPermMap.put(p.getName(),set);
    }

    /**
     * 移除玩家的所有临时权限
     * @param p 玩家
     */
    public static void clearTempPerm(Player p){
        tempPermMap.remove(p.getName());
    }

    /**
     * 清空所有玩家的临时权限
     */
    public static void clearAllPerms(){
        tempPermMap.clear();
    }

    /**
     * 打印临时权限，用于debug
     */
    public static void printAllPerms(){
        System.out.println(tempPermMap);
    }
}
